package com.ssy.lingxi.product.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.product.api.model.request.warehouse.*;
import com.ssy.lingxi.product.api.model.response.warehouse.InvoicesDetailsResponse;
import com.ssy.lingxi.product.entity.warehouse.InvoicesImportBatchNo;
import com.ssy.lingxi.product.api.model.response.warehouse.InvoicesListResponse;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
*
* @author wrc
* @date 2020/6/30
*/
public interface InvoicesService {

    /**
    * 查询单据列表
    * @author wrc
    * @date 2020/6/30
    */
    Wrapper<PageData<InvoicesListResponse>> invoicesList(InvoicesListRequest request, UserLoginCacheDTO sysUser );



//    /**
//    * 数据导出
//    * @author wrc
//    * @date 2020/7/3
//    */
//    Wrapper importExcel(MultipartFile file);
//
//
//    /**
//    * 数据导出检查
//    * @author wrc
//    * @date 2020/7/3
//    */
//    Wrapper importExcelCheck(MultipartFile file);

    /**
    * 单据单个删除/批量删除
    * @author wrc
    * @date 2020/7/6
    */
    Wrapper<Void> invoicesDelete(InvoicesDeleteRequest request);

    /**
     * 单据单个审核/批量审核
     * 单据单个反审/批量反审
     * @param request
     * @return
     */
    Wrapper<Void> invoicesReview(InvoicesReviewRequest request);

    /**
    * 查询导入批次号列表
    * @author wrc
    * @date 2020/7/7
    */
    Wrapper<List<InvoicesImportBatchNo>> invoicesImportBatchList(InvoicesImportBatchListRequest request);

    /**
    * 删除批次号并且删除导入的未审核的单据数据
    * @author wrc
    * @date 2020/7/7
    */
    Wrapper invoicesImportBatchDelete(@RequestBody InvoicesImportBatchDeleteRequest request);

    /**
    * 添加/修改单据
    * @author wrc
    * @date 2020/7/7
    */
    Wrapper<Void> invoicesAddOrUpdate(InvoicesAddOrUpdateRequest request, UserLoginCacheDTO sysUser);

    /**
    * 查询单据详情
    * @author wrc
    * @date 2020/7/8
    */
    Wrapper<InvoicesDetailsResponse> invoicesDetails(Long id);

    /**
    * 查询单据详情
    */
    Wrapper<InvoicesDetailsResponse> invoicesDetailsByNo(InvoicesDetailsByNoRequest request);
}
